package com.lcx.movie.controller;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lcx.movie.common.Rep;
import com.lcx.movie.entity.UserCinema;
import com.lcx.movie.service.UserCinemaService;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author 李丽君
 * @version 1.0
 * @Description 用户影院控制类
 * @date 2025/3/13 16:54
 */
@RestController
@CrossOrigin(origins = "*")
public class UserCinemaController {
    @Autowired
    private UserCinemaService userCinemaService;

    /**
     * 根据用户名或者影院名进行查询
     * @param userName 用户名
     * @param cinemaName 影院名
     * @return 用户影院集合
     */
    @GetMapping("/selectUserCinema")
    public Rep selectUserCinema(@Param("page") Integer page,@Param("pageSize") Integer pageSize,
                                @Param("userName") String userName,
                                @Param("cinemaName") String cinemaName,
                                @Param("usercinemaStatus") Integer usercinemaStatus){
        // 开启分页
        PageHelper.startPage(page,pageSize);
        // 执行查询
        List<UserCinema> userCinemas = this.userCinemaService.selectUserCinema(userName, cinemaName,usercinemaStatus);
        // 创建分页对象
        PageInfo<UserCinema> userCinemaPageInfo=new PageInfo<>(userCinemas);
        return new Rep().addData("userCinemaPageInfo",userCinemaPageInfo);
    }
    /**
     * 新增用户影院
     * @param userCinema 用户影院对象
     * @return 受影响的行数
     */
    @PostMapping("/addUserCinema")
    public String addUserCinema(@RequestBody UserCinema userCinema){
        int addUserCinema = userCinemaService.addUserCinema(userCinema);
        if (addUserCinema>0){
            return "success";
        }else {
            return "fail";
        }
    }
    /**
     * 平台管理员通过用户发送的注册影院申请
     * @param userCinemaId 用户影院id
     * @return 受影响的行数
     */
    @GetMapping("/updateUserCinemaStatus")
    public String updateUserCinemaStatus(@Param("userCinemaId") Integer userCinemaId){
        int updateUserCinemaStatus = userCinemaService.updateUserCinemaStatus(userCinemaId);
        if (updateUserCinemaStatus>0){
            return "修改状态成功";
        }else {
            return "修改状态失败";
        }
    }
    /**
     * 根据用户id查询用户影院状态
     * @param userId 用户id
     * @return 受影响的行数
     */
    @GetMapping("/getUserCinemaStatus")
    public ResponseEntity<Integer> getUserCinemaStatus(@RequestParam("userId") Integer userId) {
        Integer status = userCinemaService.getUserCinemaStatus(userId);
        if (status != null) {
            return ResponseEntity.ok(status);
        } else {
            // 如果未找到用户的注册状态，假设未提交注册申请，返回 1
            return ResponseEntity.ok(1);
        }
    }

}
